home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2000 September / september_2000.iso / intercd / root / ^Linux / WindowMaker / src / xdnd.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-18  |  2.5 KB  |  54 lines

  1.  
  2. #ifndef _XDND_H_
  3. #define _XDND_H_
  4.  
  5.  
  6. void wXDNDInitializeAtoms();
  7. Bool wXDNDProcessSelection(XEvent *event);
  8. Bool wXDNDProcessClientMessage(XClientMessageEvent *event);
  9. void wXDNDMakeAwareness(Window window);
  10. void wXDNDClearAwareness(Window window);
  11.  
  12. /* header was ripped from xdnd's example on its page */
  13.  
  14. #define XDND_THREE 3
  15. #define XDND_ENTER_SOURCE_WIN(e)    ((e)->xclient.data.l[0])
  16. #define XDND_ENTER_THREE_TYPES(e)    (((e)->xclient.data.l[1] & 0x1UL) == 0)
  17. #define XDND_ENTER_THREE_TYPES_SET(e,b)    (e)->xclient.data.l[1] = ((e)->xclient.data.l[1] & ~0x1UL) | (((b) == 0) ? 0 : 0x1UL)
  18. #define XDND_ENTER_VERSION(e)        ((e)->xclient.data.l[1] >> 24)
  19. #define XDND_ENTER_VERSION_SET(e,v)    (e)->xclient.data.l[1] = ((e)->xclient.data.l[1] & ~(0xFF << 24)) | ((v) << 24)
  20. #define XDND_ENTER_TYPE(e,i)        ((e)->xclient.data.l[2 + i])    /* i => (0, 1, 2) */
  21.  
  22. /* XdndPosition */
  23. #define XDND_POSITION_SOURCE_WIN(e)    ((e)->xclient.data.l[0])
  24. #define XDND_POSITION_ROOT_X(e)        ((e)->xclient.data.l[2] >> 16)
  25. #define XDND_POSITION_ROOT_Y(e)        ((e)->xclient.data.l[2] & 0xFFFFUL)
  26. #define XDND_POSITION_ROOT_SET(e,x,y)    (e)->xclient.data.l[2]  = ((x) << 16) | ((y) & 0xFFFFUL)
  27. #define XDND_POSITION_TIME(e)        ((e)->xclient.data.l[3])
  28. #define XDND_POSITION_ACTION(e)        ((e)->xclient.data.l[4])
  29.  
  30. /* XdndStatus */
  31. #define XDND_STATUS_TARGET_WIN(e)    ((e)->xclient.data.l[0])
  32. #define XDND_STATUS_WILL_ACCEPT(e)    ((e)->xclient.data.l[1] & 0x1L)
  33. #define XDND_STATUS_WILL_ACCEPT_SET(e,b) (e)->xclient.data.l[1] = ((e)->xclient.data.l[1] & ~0x1UL) | (((b) == 0) ? 0 : 0x1UL)
  34. #define XDND_STATUS_WANT_POSITION(e)    ((e)->xclient.data.l[1] & 0x2UL)
  35. #define XDND_STATUS_WANT_POSITION_SET(e,b) (e)->xclient.data.l[1] = ((e)->xclient.data.l[1] & ~0x2UL) | (((b) == 0) ? 0 : 0x2UL)
  36. #define XDND_STATUS_RECT_X(e)        ((e)->xclient.data.l[2] >> 16)
  37. #define XDND_STATUS_RECT_Y(e)        ((e)->xclient.data.l[2] & 0xFFFFL)
  38. #define XDND_STATUS_RECT_WIDTH(e)    ((e)->xclient.data.l[3] >> 16)
  39. #define XDND_STATUS_RECT_HEIGHT(e)    ((e)->xclient.data.l[3] & 0xFFFFL)
  40. #define XDND_STATUS_RECT_SET(e,x,y,w,h)    {(e)->xclient.data.l[2] = ((x) << 16) | ((y) & 0xFFFFUL); (e)->xclient.data.l[3] = ((w) << 16) | ((h) & 0xFFFFUL); }
  41. #define XDND_STATUS_ACTION(e)        ((e)->xclient.data.l[4])
  42.  
  43. /* XdndLeave */
  44. #define XDND_LEAVE_SOURCE_WIN(e)    ((e)->xclient.data.l[0])
  45.  
  46. /* XdndDrop */
  47. #define XDND_DROP_SOURCE_WIN(e)        ((e)->xclient.data.l[0])
  48. #define XDND_DROP_TIME(e)        ((e)->xclient.data.l[2])
  49.  
  50. /* XdndFinished */
  51. #define XDND_FINISHED_TARGET_WIN(e)    ((e)->xclient.data.l[0])
  52.  
  53. #endif
  54.